-- arena_win_diff
-- Created by dengc March/11/2016
-- 成就：角斗场战胜不同的对手

-- 内部函数声明
local whenWin;

-- 关注事件
EventMgr.register("achievements/arena_win_diff", event.ARENA_WIN, function(args)
    whenWin(args);
end);

-- 激活事件的回调
whenWin = function(args)
    -- 玩家不在地牢中
    if not DungeonM.isInDungeon() then
        return;
    end

    -- 进入的不是竞技场
    if not ArenaM.isInArena() then
        return;
    end

    -- 判断是否是同一个对手
    local combatSlimeId = ArenaM.getCombatSlimeId();
    local historySlime  = ArenaM.getSlimeInHistory() or {};
    for _, c in pairs(historySlime) do
        if c == combatSlimeId then
            return;
        end
    end

    -- 记录下来
    table.insert(historySlime, combatSlimeId);
    ArenaM.setSlimeInHistory(historySlime);   

    -- 获取当前所在的地牢区域
    local area = DungeonM.getDungeonId();

    -- 遍历所有的子规则
    local ids = AchievementM.getIdsByRule("arena_win_diff");

    for _, id in pairs(ids) do
        -- 已经完成了
        if true == AchievementM.isCompleted(id) then
            return;
        end

        -- 不是该迷宫的成就
        if not AchievementM.isBelongTo(id, area) then
            return;
        end

        -- 尝试完成成就
        AchievementM.tryComplete(id, 1);
    end
end

return {

};
